package action

import org.opennebula.client.OneResponse;
import org.opennebula.client.host.HostPool;
//import org.apache.xmlrpc.XmlRpcException
import org.codehaus.groovy.grails.commons.ApplicationHolder
import org.opennebula.client.Client
import org.opennebula.client.user.User

class LoginController {

    def index = 
	{ 
		redirect (action: 'login')
	}

	def login =
	{
		
	}

	def efetuarLogin =
	{
		UsuarioCommand uc ->

		if (uc.hasErrors())
		{
			println("Tem erro no UsuarioCommand")
			// O comando deve ser disponibilizado  para a action como o primeiro  argumento
			// do  closure da  action. O  binding com os  parâmetros de  requisição  ocorre
			// automaticamente.
			
			render(view: "login", model: [ usuario: uc ])
		}
		else
		{
					
			Client client
			try{
			def rpc = ApplicationHolder.application.metadata['one.rpc']

			println(rpc)
			
			
			String 	tupla = "${params.conta}:${params.senha}"
			println(tupla)
			
			client =  new Client(tupla, rpc)
			println(client.oneAuth)
            
			}catch(Exception e){
			    println('merda')
			    e.printStackTrace()
			    
			}
			
			 
			OneResponse oneResponse = HostPool.info(client);
			println(oneResponse.getMessage())
			println('-------------------------')
			println(oneResponse.getErrorMessage())			
			
			
			if(!oneResponse.isError())
			{
				//flash.mensagem = message(code: 'usuario.logado.message', args: [params.conta, params.senha])
				session['usuario'] = client

				if (session.controllerDestino == null)
				{
					session.controllerDestino = "virtualM"
					session.actionDestino = "list"
				}
				
				redirect (action: "${session.actionDestino}", controller: "${session.controllerDestino}")
			}
			else
			{
				request.message = "Login Inválido"
				render(view: "login", model: [ usuario: uc ])
			}
		}
	}
}
